<?php
use think\facade\Db;
use think\facade\Session;
use think\facade\Request;
/*屏蔽一般性错误提示
E_ERROR 这是一个严重错误，不可恢复，如位置异常，内存不足等
E_WARNING 警告，最一般的错误，如函数的参数错误等
E_PARSE 解析错误，在解析PHP文件时产生，并强制PHP在执行前退出
 */
error_reporting(E_ERROR | E_PARSE );
//递归
function node_merge($node,$access=null,$pid=0){
    $arr=array();
    foreach($node as $v){
        if($pid==$v['pid']){
            $v['children']=node_merge($node,$access,$v['id']);
            $arr[]=$v;
        }
    }
    return $arr;
}
//后台导航路径
function admin_nav(){
    $controller_name=Request()->controller();
    $action_name=Request()->action();
    //
    $path=$controller_name."/".$action_name;
    $id=Db::name("node")->where("name",$path)->order("pid desc")->value("id");
    $getnode="";
    if($id){
        $getnode=get_parent_node($id);
    }
    if($getnode)
    $nav='<a href="'.url('Index/index').'" class="tip-bottom"><i class="icon-home"></i>首页</a>'.$getnode;
    //如果是信息管理控制器则特别显示
    if($controller_name=="Info"){
        $nav='<a href='.url('Index/index').' class="tip-bottom"><i class="icon-home"></i>首页</a><a href="#">信息管理</a>';
        $nav_arr=nav_arr();
        foreach($nav_arr as $v){
            $nav.="<a href='".url("Info/index",["catid"=>$v["catid"]])."'>".$v["name"]."</a>";
        }
        if($action_name=="add"){
            $nav.="<a href='".url("Info/add",["catid"=>Request::param("catid")])."'>增加信息</a>";
        }
        if($action_name=="update"){
            $nav.="<a href='".url("Info/update",["catid"=>Request::param("catid"),"id"=>Request::param("id"),"cache_id"=>Request::param("cache_id")])."'>修改信息</a>";
        }        
        if($action_name=="checked"){
            $nav.="<a href='#'>审核信息</a>";
        }       
        if($action_name=="set_top"){
            $nav.="<a href='#'>信息顶置</a>";
        }        
        if($action_name=="set_good"){
            $nav.="<a href='#'>信息推荐</a>";
        }           
    }
    //
    return $nav;
}
//根据pid找到所有父节点
function get_parent_node($id,$nav=""){  
    $r=Db::name("node")->find($id);
    $path=Request()->controller()."/".Request()->action();
    $curr="";
    if($path==$r['name']){
        $self="<a class='".$curr."'>".$r['title']."</a>";
        $curr="current";
    }else{
        $self="<a href='".url($r['name'])."' class='".$curr."'>".$r['title']."</a>";
    }
    $nav=$self.$nav; 
    if($r['pid']){
       return get_parent_node($r['pid'],$nav); 
    }else{
       return $nav;
    }
}
//检测当前用户是否有对栏目的增加,编辑,删除,审核,查看权限
function check_user_cat($action,$catid,$user_id=0){
    $user_id=$user_id?$user_id:Session::get('user_id');
    if($user_id==config('app.super_admin_user_id')){
        return true;//管理员允许访问任何页面
    }
    //
    //保存rule对应的栏目id到session里
    $role_user=Db::name("role_user")->where("user_id",$user_id)->select();
    foreach($role_user as $v){
        $roleData=Db::name("role")->find($v["role_id"]);
        $role['info_checked'].=$roleData['info_checked'];
        $role['info_view'].=$roleData['info_view'];
        $role['info_add'].=$roleData['info_add'];
        $role['info_editor'].=$roleData['info_editor'];
        $role['info_delete'].=$roleData['info_delete'];
        //开放所有栏目权限
        if($roleData['all_info']){
            $role['all_info']=1;
        }
    }
    //如果开放了所有栏目权限的话直接返回true
    if($role[all_info]){
        return true;
    }
    //
    if(strstr($role[$action],"|".$catid."|")){
        return true;
    }
    return false;
}
/**
 * 数字转字母 （类似于Excel列标）
 * @param Int $index 索引值
 * @param Int $start 字母起始值
 * @return String 返回字母
 */
function IntToChr($index, $start = 65) {
    $str = '';
    if (floor($index / 26) > 0) {
        $str .= IntToChr(floor($index / 26)-1);
    }
    return $str . chr($index % 26 + $start);
}